import os
import re
import shutil

def batch_rename_images():
    # -------------------------- 请修改这里的路径 --------------------------
    input_dir = r"datasets/SEMimg"  # 原始图片文件夹路径
    output_dir = r"datasets/HR"  # 重命名后保存的文件夹（HR高分辨图）
    # ----------------------------------------------------------------------

    # 创建输出文件夹（不存在则创建）
    os.makedirs(output_dir, exist_ok=True)

    # 正则表达式：提取文件名中括号内的数字（如“1 (10).jpg”提取“10”）
    pattern = re.compile(r'\((\d+)\)')

    # 遍历原始文件夹中的所有图片
    image_files = [f for f in os.listdir(input_dir) if f.endswith(('.jpg', '.png'))]
    if not image_files:
        print("未找到图片文件！请检查输入路径是否正确。")
        return

    # 提取数字并排序（确保1、2、...、224顺序）
    sorted_files = []
    for file in image_files:
        match = pattern.search(file)
        if match:
            num = int(match.group(1))  # 提取括号内的数字
            sorted_files.append((num, file))  # 存储（数字，原文件名）

    # 按数字升序排序
    sorted_files.sort(key=lambda x: x[0])

    # 批量重命名并复制到输出文件夹
    for idx, (num, old_filename) in enumerate(sorted_files, start=1):
        # 新文件名：纯数字 + 原文件后缀（保持jpg格式）
        suffix = os.path.splitext(old_filename)[1]  # 获取文件后缀（.jpg）
        new_filename = f"{idx}{suffix}"  # 如“1.jpg”“2.jpg”

        # 拼接路径
        old_path = os.path.join(input_dir, old_filename)
        new_path = os.path.join(output_dir, new_filename)

        # 复制文件（不移动原图，避免误删）
        shutil.copy2(old_path, new_path)
        print(f"已处理：{old_filename} → {new_filename}")

    print(f"\n重命名完成！共处理 {len(sorted_files)} 张图片，保存到：{output_dir}")

if __name__ == '__main__':
    batch_rename_images()